package Controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

import Modelo.Arbitro;
import Modelo.Equipo;
import Modelo.Liga;
import Modelo.Partido;
import Vista.VentanaPrincipal;

public class ControladorVentanaPrincipal implements ActionListener{
	
	VentanaPrincipal ventanaPrincipal;
	public static final Liga liga = new Liga();
	public static final Partido partido = new Partido();
	
	public ControladorVentanaPrincipal() {
		super();
		// TODO Auto-generated constructor stub
		this.ventanaPrincipal = new VentanaPrincipal();
		this.ventanaPrincipal.setVisible(true);
		this.ventanaPrincipal.setLocationRelativeTo(null);
		this.ventanaPrincipal.agregarListener(this);
		
	}

	@Override
	public void actionPerformed(ActionEvent e) 
	{
		// TODO Auto-generated method stub
		
	 if (e.getActionCommand().equalsIgnoreCase("Gestionar Arbitro"))
	 {
			new ControladorVentanaGestionarArbitro();
	 }
	 else 
		 if (e.getActionCommand().equalsIgnoreCase("Gestionar Equipo"))
		 {
			new ControlarVentanaGestionarEquipo();
		 }
	 
	 else 
		if (e.getActionCommand().equalsIgnoreCase("Generar Partido"))
		 {
			int cont=0;
		    ListIterator<Equipo> iter = partido.getEquipos().listIterator();
			Equipo equipo1 = new Equipo();
			Equipo equipo2 = new Equipo();
			Equipo equipo3 = new Equipo();
			Equipo equipo4 = new Equipo();
			Equipo equipo5 = new Equipo();
			Equipo equipo6 = new Equipo();
			while(iter.hasNext()){
				cont = iter.nextIndex();
				cont++;
				if(cont==1)
				equipo1 = (Equipo)iter.next();
				else if(cont==2)
				equipo2 = (Equipo)iter.next();
				else if(cont==3)
				equipo3 = (Equipo)iter.next();
				else if(cont==4)
				equipo4 = (Equipo)iter.next();
				else if(cont==5)
				equipo5 = (Equipo)iter.next();
				else if(cont==6)
				equipo6 = (Equipo)iter.next();
			}
			generarPartido(equipo1, equipo2, equipo3, equipo4, equipo5, equipo6);
		 }
		 else 
			 if (e.getActionCommand().equalsIgnoreCase("Calendario de Juegos"))
			 {
				new ControladorVentanaCalendarioJuegos(liga);
			 }
		 
			
	}
	
	public void generarPartido(Equipo equipo1,
			Equipo equipo2, Equipo equipo3, Equipo equipo4,  Equipo equipo5,
			Equipo equipo6)
	{
		//Variables
		int golesLocal = 0; 
		int golesVisitante = 0;		  		
		int y;
		

		Equipo equipoLocal = new Equipo();
		Equipo equipoVisitante = new Equipo();
		
	
		List<Equipo>secuencia = new ArrayList<Equipo>();
		secuencia.add(equipo1);  //Fecha1
		secuencia.add(equipo4);
		secuencia.add(equipo2);
		secuencia.add(equipo3);	 
		secuencia.add(equipo5);
		secuencia.add(equipo6);

		secuencia.add(equipo3);  //Fecha2
		secuencia.add(equipo1);
		secuencia.add(equipo4);
		secuencia.add(equipo6);
		secuencia.add(equipo5);
		secuencia.add(equipo2);
		
		secuencia.add(equipo2);  //Fecha3
		secuencia.add(equipo4);
		secuencia.add(equipo6);
		secuencia.add(equipo3);
		secuencia.add(equipo1);
		secuencia.add(equipo5);
		
		secuencia.add(equipo1);  //Fecha4
		secuencia.add(equipo6);
		secuencia.add(equipo3);
		secuencia.add(equipo4);
		secuencia.add(equipo2);
		secuencia.add(equipo5);
		
		secuencia.add(equipo2);  //Fecha5
		secuencia.add(equipo6);
		secuencia.add(equipo5);
		secuencia.add(equipo1);
		secuencia.add(equipo4);
		secuencia.add(equipo3);
		
		secuencia.add(equipo4);  //Fecha6
		secuencia.add(equipo1);
		secuencia.add(equipo3);
		secuencia.add(equipo2);
		secuencia.add(equipo6);
		secuencia.add(equipo5);
		
		
		secuencia.add(equipo1);  //Fecha7
		secuencia.add(equipo3);
		secuencia.add(equipo6);
		secuencia.add(equipo4);
		secuencia.add(equipo2);
		secuencia.add(equipo5);
		
		secuencia.add(equipo4);  //Fecha8
		secuencia.add(equipo2);
		secuencia.add(equipo3);
		secuencia.add(equipo6);
		secuencia.add(equipo5);
		secuencia.add(equipo1);
		
		secuencia.add(equipo6);  //Fecha9
		secuencia.add(equipo1);
		secuencia.add(equipo4);
		secuencia.add(equipo3);
		secuencia.add(equipo5);
		secuencia.add(equipo2);
		
		secuencia.add(equipo6);  //Fecha10
		secuencia.add(equipo2);
		secuencia.add(equipo1);
		secuencia.add(equipo5);
		secuencia.add(equipo3);
		secuencia.add(equipo4);
	   
		for(int f=1;f<6;f++)
		{
		   
		     	int codigo = 0;
				int fecha = f;
				String fechaPartido = " ";
				fechaPartido = Integer.toString(fecha);
						
						
				for(int x=0;x<6;x=x+2)
				{
				    y = x+1;
				
				  	
				   equipoLocal = secuencia.get(x);
				   equipoVisitante = secuencia.get(y);
				
				   golesLocal=(int)Math.floor(Math.random()*5);
				   golesVisitante=(int)Math.floor(Math.random()*5);
																			
				   partido.setMarcadorFinalLocal(golesLocal);
				   partido.setMarcadorFinalVisitante(golesVisitante);
				 

				if(golesLocal >0)
				{
					equipoVisitante.setGolesContra(golesLocal);
					
				}
				
				if(golesVisitante >0)
				{	
					
					equipoLocal.setGolesContra(golesVisitante);
					
					equipoVisitante.setGolesFavor(golesVisitante);
					
				}
				
				//Incrementar JuegosJugados
				equipoLocal.setJuegosJugados(equipoLocal.getJuegosJugados()+1);
				equipoVisitante.setJuegosJugados(equipoVisitante.getJuegosJugados()+1);
				
				//Incrementar JuegosGanados y Empatados
				if(golesLocal > golesVisitante)
				{
					equipoLocal.setJuegosGanados(equipoLocal.getJuegosGanados()+1);
					equipoVisitante.setJuegosPerdidos(equipoVisitante.getJuegosPerdidos()+1);
					
				}
				else if(golesLocal == golesVisitante){
					equipoLocal.setJuegosEmpatados(equipoLocal.getJuegosEmpatados()+1);
					equipoVisitante.setJuegosEmpatados(equipoVisitante.getJuegosEmpatados()+1);
				}
				else{  
					equipoVisitante.setJuegosGanados(equipoVisitante.getJuegosGanados()+1);
					equipoLocal.setJuegosPerdidos(equipoLocal.getJuegosPerdidos()+1);;
				}
				
			
				
			}
				
				Partido partido = new Partido(codigo,fechaPartido,equipoLocal,equipoVisitante);
				liga.agregarPartido(partido);	
					
		  
		   }	
		 
	
		ventanaPrincipal.mostrarMensaje("El partido fue agregado satisfactoriamente:" + "Hay:" + liga.contarPartidos());
		
}
	

}

	
	


